var express = require('express');
var router = express.Router();

var CONFIG = require('../../../../common/config');
var CODE = require('../../../../common/code');
var retUtil = require('./util/retUtil');
var superagent = require('superagent');
var designsUtil = require('./util/designsUtil');

/*
* 创建/修改模板
*
* @deprecated, 2018-04-23 暂未使用, 现有结构仍依赖 page 和 pc, 此接口留作备用
*
* @author 王俊
* @date 2018-04-11
*
* 参数: userId	一键生成后台用户 id
* 参数: designKind	10 静态设计, 20 视频设计, 暂时固定传10
* 参数: designId 设计 id, 为0新建模板
* 参数: typeId	设计模板分类 id, 不存在认为创建失败
* 参数: tg	模板提纲 json 字符串
* 参数: doc	模板内容 json 字符串
* 参数[可选]: srcUrl 模板源文件对应的 oss 地址
*
* 接口地址: http://yapi.yijianxiu.com:7000/project/107/interface/api/2708
* */
function updateDesign(req, res, next) {

    var userId = retUtil.numberFromReq(req, 'userId');
    var designKind = retUtil.numberFromReq(req, 'designKind');
    var designId = retUtil.numberFromReq(req, 'designId');
    var typeId = retUtil.numberFromReq(req, 'typeId');
    var tg = retUtil.stringFromReq(req, 'tg');
    var doc = retUtil.stringFromReq(req, 'doc');
    var designName = retUtil.stringFromReq(req, 'designName');
    var srcUrl = retUtil.stringFromReq(req, 'srcUrl');
    var typeset = retUtil.numberFromReq(req, 'typeset');

    if(!userId || !typeId || !tg || tg.length < 2 || !doc || doc.length <2 ) {
        return retUtil.ret_err_json('参数错误', res);
    }
    if(designKind !== 10 ) {
        return retUtil.ret_err_json('暂不支持的模板类型', res);
    }
    if(designId <=0 && !designName || designName.length <=0) {
        return retUtil.ret_err_json('新建模板,模板名不能为空', res);
    }
    if (designName && designName.length > 15) {
        return retUtil.ret_err_json('模板名称过长', res);
    }


    var opt = {
        userId : userId,
        designKind : designKind,
        designId : designId,
        designName : designName,
        typeId : typeId,
        tg : tg,
        doc : doc,
        srcUrl : srcUrl,
        typeset : typeset
    };

    designsUtil.createOrUpdateDesign(opt, function (error, data) {
        if(error) {
            return retUtil.ret_err_json(error, res);
        }
        return retUtil.ret_succ_json(data, res);
    });

}
router.get('/updateDesign', updateDesign);
router.post('/updateDesign', updateDesign);


router.get('/',function (req, res, next) {
    res.send('respond with a designs resource');
});


/***
 * 获取模板关键词列表
 * @author 毛凯
 * @date 2018-4-11
 * 方式: GET
 * 参数: userId   用户唯一标识
 * 参数: designId  设计模板id
 * 参数: designKind    10 标记静态设计模板, 20 标记视频设计模板
 *测试地址 : http://localhost:3000/yjxc/yjscPlatform/design/v1/users/userLogin?userId=1&designId=22&designKind=10
 */
function getDesignKwds(req, res, next) {
    var userId = retUtil.numberFromReq(req, 'userId');
    var designId = retUtil.numberFromReq(req, 'designId');
    var designKind = retUtil.numberFromReq(req, 'designKind')||10;
    if (!userId || !designId || !designKind) {
        return retUtil.ret_err_json("参数有误", res);
    }

    designsUtil.getDesignKwds(designId,designKind, function (err,data) {
        if(err){
            return retUtil.ret_err_json(err, res);
        }
        return retUtil.ret_succ_json(data, res);
    });

}
router.post('/getDesignKwds', getDesignKwds);
router.get('/getDesignKwds', getDesignKwds);


/***
 * 重置模板关键词
 * @author 毛凯
 * @date 2018-4-12
 * 方式: GET
 * 参数: userId   用户唯一标识
 * 参数: designId  设计模板id
 * 参数: defKeyIds 默认关键词的 id 数组 json
 * 参数: cusKeys 用户自定义关键词列表(不超过四个)
 * 参数: designKind    10 标记静态设计模板, 20 标记视频设计模板
 *测试地址 : http://localhost:3000/yjxc/yjscPlatform/design/v1/users/updateDesignKeyword
 */
function updateDesignKeyword(req, res, next) {
    var userId = retUtil.numberFromReq(req, 'userId');
    var designId = retUtil.numberFromReq(req, 'designId');
    var defKeyIds = retUtil.arrayFromReq(req,'defKeyIds') || [];
    var cusKeys =  retUtil.arrayFromReq(req,'cusKeys')|| [];
    var designKind = retUtil.numberFromReq(req, 'designKind')||10;
    if (!userId || !designId || !designKind || !cusKeys || !defKeyIds ) {
        return retUtil.ret_err_json("参数有误", res);
    }
    designsUtil.updateDesignKeyword(userId,designId,defKeyIds,cusKeys,designKind, function (err,data) {
        if(err){
            return retUtil.ret_err_json(err, res);
        }
        return retUtil.ret_succ_json(data, res);
    });

}
router.post('/updateDesignKeyword', updateDesignKeyword);
router.get('/updateDesignKeyword', updateDesignKeyword);


/***
 * 获取模板详情
 * @author 毛凯
 * @date 2018-4-12
 * 方式: GET
 * 参数: userId   用户唯一标识
 * 参数: designId  设计模板id
 * 参数: designKind    10 标记静态设计模板, 20 标记视频设计模板
 *测试地址 : http://localhost:3000/yjxc/yjscPlatform/design/v1/users/getDesignPreview
 */
function getDesignPreview(req, res, next) {
    var userId = retUtil.numberFromReq(req, 'userId');
    var designId = retUtil.numberFromReq(req, 'designId');
    var designKind = retUtil.numberFromReq(req, 'designKind')||10;
    if (!userId || !designId || !designKind ) {
        return retUtil.ret_err_json("参数有误", res);
    }
    designsUtil.getDesignPreview(designId,designKind, function (err,data) {
        if(err){
            return retUtil.ret_err_json(err, res);
        }
        return retUtil.ret_succ_json(data, res);
    });

}
router.post('/getDesignPreview', getDesignPreview);
router.get('/getDesignPreview', getDesignPreview);


/***
 * 获取模板列表
 * @author 毛凯
 * @date 2018-4-13
 * 方式: GET
 * 参数: userId   用户唯一标识
 * 参数: designKind    10 标记静态设计模板, 20 标记视频设计模板
 * 参数: check  1 标记审核, 将已该用户对应的组织下所有模板, 0 标记仅查看当前用户作品默认为0
 * 参数: state 上架模板状态: 0未知;10制作中;20提交等待审核;31一级审核通过,32二级审核通过;41一级审核失败,42二级审核失败
 * 参数: state2 下架模板状态:0未知;10制作中;20提交等待审核;31一级审核通过,32二级审核通过;41一级审核失败,42二级审核失败
 * 参数: publish 1 已上架, 0 未上架, 默认 [0, 1]
 * 参数: pageNum  页码
 * 参数: pageSize 页容量
 * 参数: withTotalPage 是否获取总页数, 0 不获取, 1 获取
 *测试地址 : http://localhost:3000/yjxc/yjscPlatform/design/v1/users/filterDesigns
 */
function filterDesigns(req, res, next) {
    var userId = retUtil.numberFromReq(req, 'userId');
    var designKinds = retUtil.arrayFromReq(req, 'designKinds')||[10];
    var check = retUtil.numberFromReq(req, 'check')||0;
    var states = retUtil.arrayFromReq(req, 'states') || [];
    var state2s = retUtil.arrayFromReq(req, 'state2s') || [];
    var publish = retUtil.arrayFromReq(req, 'publish') || [];
    var pageNum = retUtil.numberFromReq(req, 'pageNum') || 0;
    var pageSize = retUtil.numberFromReq(req, 'pageSize') || 12;
    var withTotalPage = retUtil.numberFromReq(req, 'withTotalPage');
    if (!userId  || !designKinds ) {
        return retUtil.ret_err_json("参数有误", res);
    }

    var opt = {
        userId : userId,
        designKinds : designKinds,
        check : check,
        states : states,
        state2s : state2s,
        publish : publish,
        pageNum : pageNum,
        pageSize : pageSize,
        withTotalPage : withTotalPage
    };

    designsUtil.filterDesigns(opt,function (err,data) {
        if(err){
            return retUtil.ret_err_json(err, res);
        }
        return retUtil.ret_succ_json(data, res);
    });

}
router.post('/filterDesigns', filterDesigns);
router.get('/filterDesigns', filterDesigns);



/***
 * 管理员审核模版
 * @author 李强
 * @date 2018-4-13
 * 方式: GET
 * 参数: userId   用户唯一标识
 * 参数: designId   设计id
 * 参数: designKind    10 标记静态设计模板, 20 标记视频设计模板
 * 参数: remark  审核备注, 标记打回原因, 审核通过可传固定值
 * 参数: state 审核状态, 1, 审核通过, 2, 审核打回
 * 参数: kind 1 上架审核, 2 下架审核
 *测试地址 : http://localhost:3000/yjsc/yjscPlatform/design/v1/designs/checkDesign
 */
function checkDesign(req, res, next) {
    var userId = retUtil.numberFromReq(req, 'userId');
    var designId = retUtil.numberFromReq(req, 'designId');
    var designKind = retUtil.numberFromReq(req, 'designKind')||10;
    var remark = retUtil.stringFromReq(req, 'remark')||"";
    var state = retUtil.numberFromReq(req, 'state');
    var kind = retUtil.numberFromReq(req, 'kind');
    if(!userId || !designId || !state || !kind) {
        return retUtil.ret_err_json('参数错误', res);
    }
    if(designKind !== 10 ) {
        return retUtil.ret_err_json('暂不支持的模板类型', res);
    }
    designsUtil.checkDesign(userId,designId,designKind,remark,state,kind, function (err,data) {
        if(err){
            return retUtil.ret_err_json(err, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}
router.post('/checkDesign', checkDesign);
router.get('/checkDesign', checkDesign);


/***
 * 提交模板状态变更申请
 * @author 李强
 * @date 2018-4-13
 * 方式: GET
 * 参数: userId   用户唯一标识
 * 参数: designId   设计id
 * 参数: designKind    10 标记静态设计模板, 20 标记视频设计模板
 * 参数: remark  审核备注, 标记申请下架原因 提交上架申请可传固定值
 * 参数: kind 1 上架审核, 2 下架审核
 *测试地址 : http://localhost:3000/yjsc/yjscPlatform/design/v1/designs/requestDesignCheck
 */
function requestDesignCheck(req, res, next) {
    var userId = retUtil.numberFromReq(req, 'userId');
    var designId = retUtil.numberFromReq(req, 'designId');
    var designKind = retUtil.numberFromReq(req, 'designKind')||10;
    var remark = retUtil.stringFromReq(req, 'remark')||"";
    var kind = retUtil.numberFromReq(req, 'kind');
    if(!userId || !designId || !kind) {
        return retUtil.ret_err_json('参数错误', res);
    }
    if(designKind !== 10 ) {
        return retUtil.ret_err_json('暂不支持的模板类型', res);
    }
    designsUtil.requestDesignCheck(userId,designId,designKind,remark,kind, function (err,data) {
        if(err){
            return retUtil.ret_err_json(err, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}
router.post('/requestDesignCheck', requestDesignCheck);
router.get('/requestDesignCheck', requestDesignCheck);


/***
 * 获取模板统计数据
 * @author 毛凯
 * @date 2018-4-13
 * 方式: GET
 * 参数: userId   用户唯一标识
 * 参数: accounts   设计师账户数组对应的 json 字符串, 不传默认全部
 * 参数: designKinds    10 标记静态设计模板, 20 标记视频设计模板
 * 参数: beginTime  开始时间戳, 秒级, 不传默认平台开发时的时间戳
 * 参数: endTime    结束时间戳, 秒级, 不传默认服务器当前时间
 *测试地址 : http://localhost:3000/yjsc/yjscPlatform/design/v1/designs/requestDesignCheck
 */
function designStatistics(req, res, next) {
    var userId = retUtil.numberFromReq(req, 'userId');
    var accounts = retUtil.arrayFromReq(req, 'accounts');
    var designKinds = retUtil.arrayFromReq(req, 'designKinds')||[10];
    var beginTime = retUtil.numberFromReq(req, 'beginTime');
    var endTime = retUtil.numberFromReq(req, 'endTime');
    if(!userId || !designKinds) {
        return retUtil.ret_err_json('参数错误', res);
    }
    var designKind = designKinds.toString();
    if(designKind != 10) {
        return retUtil.ret_err_json('暂不支持的模板类型', res);
    }
    designsUtil.designStatistics(userId,accounts,beginTime,endTime, function (err,data) {
        if(err){
            return retUtil.ret_err_json(err, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}
router.post('/designStatistics', designStatistics);
router.get('/designStatistics', designStatistics);


/***
 * 删除设计模板
 * @author 李强
 * @date 2018-5-30
 * 方式: GET
 * 参数: userId   用户唯一标识
 * 参数: designKind    10 标记静态设计模板, 20 标记视频设计模板
 * 参数: designId  设计id
 *测试地址 : http://localhost:3000/yjsc/yjscPlatform/design/v1/designs/deleteDesignDoc
 */
function deleteDesignDoc(req, res, next) {
    var userId = retUtil.numberFromReq(req, 'userId');
    var designKind = retUtil.numberFromReq(req, 'designKind')||10;
    var designId = retUtil.numberFromReq(req, 'designId');
    if(!userId || !designKind || !designId) {
        return retUtil.ret_err_json('参数错误', res);
    }
    if(designKind != 10) {
        return retUtil.ret_err_json('暂不支持的模板类型', res);
    }
    designsUtil.deleteDesignDoc(userId,designId, function (err,data) {
        if(err){
            return retUtil.ret_err_json(err, res);
        }
        return retUtil.ret_succ_json({}, res);
    });
}
router.post('/deleteDesignDoc', deleteDesignDoc);
router.get('/deleteDesignDoc', deleteDesignDoc);

//-----------------------------------------
module.exports = router;